/*
在交叉编译针对ARM64（或称为aarch64）架构的程序时，
stdio.h 和 sys/ioctl.h 这两个头文件通常是标准C库和系统调用库的一部分，
它们应该随着你的交叉编译工具链一起提供。如果你的交叉编译工具链安装正确，
并且针对的是ARM64架构，那么在编译过程中，编译器应该能够自动找到这些头文件。
*/
#include <stdio.h>
#include "gpio_ioctl.h"
#include <sys/ioctl.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

int main(void){

    char gpio_status;

    char * device_path = "/dev/my_gpio0";

    printf("hello arm64\n");

    // 打开得到设备的 文件描述符
    int fileDescripter = open(device_path,O_RDWR);

    ioctl(fileDescripter,READ_STATUS_COMMAND,&gpio_status);

    printf("current device %s mapping GPIO status is %c\n",device_path,gpio_status);

    printf("set status to 1 by ioctl command\n");

    ioctl(fileDescripter,OUTPUT_HEIGHT_COMMAND);

    ioctl(fileDescripter,READ_STATUS_COMMAND,&gpio_status);

    printf("current device %s mapping GPIO status is %c\n",device_path,gpio_status);

    printf("set status to 0 by ioctl command\n");

    ioctl(fileDescripter,OUTPUT_LOW_COMMAND);

    ioctl(fileDescripter,READ_STATUS_COMMAND,&gpio_status);

    printf("current device %s mapping GPIO status is %c\n",device_path,gpio_status);

    close(fileDescripter);

    return 0;
}


